// -*-C++-*-
/*!
 * @file  ${tmpltHelper.getBasename2(${idlFileParam.idlFileNoExt})}${tmpltHelper.serviceImplSuffix}.h
 * @brief Service implementation header of ${idlFileParam.idlFile}
#parse("${template}/cpp/_doc.vsl")
 */

#if (${idlFileParam.includeIdlParams.size()} > 0)
#foreach ($idl in ${idlFileParam.includeIdlParams})
${sharp}include "${idl.idlFileNoExt}${tmpltHelper.serviceSkelSuffix}.h"
#end

#end
${sharp}include "${idlFileParam.idlFileNoExt}${tmpltHelper.serviceSkelSuffix}.h"

#ifndef ${idlFileParam.idlFileNoExt.toUpperCase()}${tmpltHelper.serviceImplSuffix.toUpperCase()}_H
${sharp}define ${idlFileParam.idlFileNoExt.toUpperCase()}${tmpltHelper.serviceImplSuffix.toUpperCase()}_H
 
#foreach($serviceClassParam in ${idlFileParam.testServiceClassParams})
/*!
 * @class ${tmpltHelper.getBasename2(${serviceClassParam.name})}${tmpltHelper.serviceImplSuffix}
 * Example class implementing IDL interface ${cXXConv.convertDelimiter(${serviceClassParam.name})}
 */
class ${tmpltHelper.getBasename2(${serviceClassParam.name})}${tmpltHelper.serviceImplSuffix}
 : public virtual POA_${cXXConv.convertDelimiter(${serviceClassParam.name})},
   public virtual PortableServer::RefCountServantBase
{
 private:
   // Make sure all instances are built on the heap by making the
   // destructor non-public
   //virtual ~${tmpltHelper.getBasename2(${serviceClassParam.name})}${tmpltHelper.serviceImplSuffix}();

 public:
  /*!
   * @brief standard constructor
   */
   ${tmpltHelper.getBasename2(${serviceClassParam.name})}${tmpltHelper.serviceImplSuffix}();
  /*!
   * @brief destructor
   */
   virtual ~${tmpltHelper.getBasename2(${serviceClassParam.name})}${tmpltHelper.serviceImplSuffix}();

   // attributes and operations
#foreach($serviceMethodParam in ${serviceClassParam.methods})
   ${cXXConv.convCpp2CORBA(${serviceMethodParam})} ${serviceMethodParam.name}(#foreach($serviceArgumentParam in ${serviceMethodParam.arguments})#if($velocityCount > 1), #end${cXXConv.convCpp2CORBAforArg(${serviceArgumentParam})} ${serviceArgumentParam.name}#end);
#end

};

#end


#endif // ${idlFileParam.idlFileNoExt.toUpperCase()}${tmpltHelper.serviceImplSuffix.toUpperCase()}_H


